package com.itgacl.magic4j.libcommon;

import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.AnnotationBeanNameGenerator;

/**
 * 解决Springboot不同package下同名Class启动报错
 * 通过查看Spring源码得知，当我们使用注解创建bean时，spring使用了AnnotationBeanNameGenerator来创建bean的名称。
 * 出现冲突原因：spring提供两种beanName生成策略
 * 默认的生成beanName的策略就是取当前类名（不是全限定类名）作为beanName。由此，如果出现不同包结构下同样的类名称，就会出现冲突。
 * 解决办法：重新定义beanName生成策略
 */
public class SpringBeanNameGenerator extends AnnotationBeanNameGenerator {
    @Override
    protected String buildDefaultBeanName(BeanDefinition definition) {
        return definition.getBeanClassName();//使用全限定类名作为bean名称
    }
}